package InnerClass;

public class Car {
    String carName;
    int carPrice;
    String carColor;

    public void show(){
        System.out.println(carName);
        System.out.println(carPrice);
        System.out.println(carColor);
        Engine e = new Engine();
        e.engineName = "发动机";
        e.enginePrice = 10000;
        e.engineColor = "红色";
        System.out.println(e.engineName);
    }

    public static void show2(){
    }

    //成员内部类
    class Engine{
        String engineName;
        int enginePrice;
        String engineColor;

        public void show(){
            System.out.println(engineName);
            System.out.println(enginePrice);
            System.out.println(engineColor);
            System.out.println(carName);
            System.out.println(carPrice);
            System.out.println(carColor);
        }
    }
    //静态内部类
    //静态内部类只能访问外部类的静态成员和静态方法
    //如果要访问非静态的需要创建对象
    static class StaticEngine{

    }

    //局部内部类
    //局部内部类只能在局部范围内使用
    //将内部类定义在方法中就是局部内部类，类似于方法里面的局部变量
    //外界是无法直接使用，需要在方法内部创建对象并使用
    //该类可以直接访问外部类的成员，也可以访问方法内的局部变量

    //匿名内部类
    //匿名内部类本质就是隐藏了名字的内部类
    //格式
    //new 类名或者接口名(){
    //    重写方法;
    //}
}
